package Convertisseur;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.mxgraph.util.mxResources;

import jxl.Sheet;
import DataStorage.InfluenceDAOHibernate;

public class VerifierListCoupeEchantillonAvecListDefinie extends Verification {
	//private CoupesDAOHibernate coupesDAO = new CoupesDAOHibernate();
	private InfluenceDAOHibernate InfluenceDAO = new InfluenceDAOHibernate();
	// (coupe, message)
	private static Map<String, String> map_coupe_message = new HashMap<String, String>();
	
	

	public static Map<String, String> getMap_coupe_message() {
		return map_coupe_message;
	}

	public void VerifierListCoupeEchantillon(Sheet sheet) {
		
		List<String> listCoupeDB = getListCoupeByDB();
		List<String> listCoupeByEchantillon = getListCoupeByEchantillon(sheet);
		String identification = this.getIdentificationPiece(sheet);
		if(identification.contains("bras")){
			String bars = this.getBras(sheet);
			setMessageOfJugementByBras(bars, listCoupeDB, listCoupeByEchantillon);
		}else{
			String N_serie = this.getN_serie(sheet);
			setMessageOfJugementByEssieu(N_serie, listCoupeDB, listCoupeByEchantillon);
		}	
	}

	public List<String> getListCoupeByEchantillon(Sheet sheet) {
		List<String> listCoupeByEchantillon = new ArrayList<String>();
		listCoupeByEchantillon.clear();
		listCoupeByEchantillon = ExcelPublicMethod.getListCoupe(sheet);
		return listCoupeByEchantillon;
	}

	public List<String> getListCoupeByDB() {
		List<String> listCoupeDB = InfluenceDAO.getListCoupe(InformationLigne_id);
		return listCoupeDB;
	}

	public Map<String, String> setMessageOfJugementByEssieu(String N_serie_bras,
			List<String> listCoupeByDB, List<String> listCoupeByEchantillon) {

		for (String coupe : listCoupeByDB) {
			boolean isExistCuope = listCoupeByEchantillon.contains(coupe);
			if (!isExistCuope) {
				String Message = "";
				//cout++;
				if(map_coupe_message.containsKey(coupe)){
					//old message
					Message = map_coupe_message.get(coupe);
					//new message
					Message = Message+", "+N_serie_bras+" "+ mxResources.get("error7");		
					map_coupe_message.put(coupe, Message);
				}else{
					//new message
					Message = N_serie_bras+" "+ mxResources.get("error7");		
					map_coupe_message.put(coupe, Message);
				}	
			}
		}
		return map_coupe_message;
	}
	
	public Map<String, String> setMessageOfJugementByBras(String Bras,
			List<String> listCoupeByDB, List<String> listCoupeByEchantillon) {
		//int cout = 0;
		for (String coupe : listCoupeByDB) {
			boolean isExistCuope = listCoupeByEchantillon.contains(coupe);
			if (!isExistCuope) {
				String Message = "";
				//cout++;
				if(map_coupe_message.containsKey(coupe)){
					//old message
					Message = map_coupe_message.get(coupe);
					//new message
					Message = Message+", "+Bras+" "+ mxResources.get("error7");		
					map_coupe_message.put(coupe, Message);
				}else{
					//new message
					Message =Bras+" "+ mxResources.get("error7");		
					map_coupe_message.put(coupe, Message);
				}
				
			}
		}
		return map_coupe_message;
	}

}
